- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Класс ListCell представляет отображаемый элемент списка ListView.
Изменить свойство cellFactory можно методом setCellFactory, в который можно передать ListCell реализацию CheckBoxListCell, ChoiceBoxListCell, ComboBoxListCell, или TextFieldListCell.
Или же можно создать свой компонент ListCell и вернуть его в переопределенном методе call интерфейса, который служит аргументом метода setCellFactory.
Свойство selectionModel класса ListView дает возможность определить множественность выбора и обработку события выбора элемента списка.
Множественность выбора элементов списка устанавливается методом setSelectionMode.
Обработка выбора элемента списка пользователем обрабатывается с помощью присоединения слушателя свойства selectedItemProperty модели выбора SelectionModel.
Чтобы сделать список редактируемым, во-первых, нужно вызвать метод setEditable (true) для списка.
А во-вторых, нужно для списка определить редактируемую ячейку, например, ячейку с текстовым полем TextFieldListCell.
Таблица TableView
Компонент TableView представляет таблицу элементов.
Таблица TableView состоит из набора ObservableList столбцов TableColumn, пополнить который можно с помощью метода getColumns.addAll класса TableView.
С помощью свойства items класса TableView набор ObservableList столбцов TableColumn таблицы связывается с набором ObservableList данных для строк таблицы.
Таким образом, у нас есть два списка.
Один список – это список столбцов таблицы.
И второй список – это список объектов, представляющих строки таблицы.
Чтобы создать список объектов, представляющих строки таблицы, нам нужно создать модель данных.
Модель данных – это JavaFX Bean класс, то есть Java класс, использующий JavaFX свойства.
Каждое JavaFX свойство модели данных предназначено представлять столбец таблицы.
Таким образом, экземпляр класса модели данных будет представлять строку таблицы.
После создания модели данных, мы создаем список ObservableList данных для строк таблицы, то есть список экземпляров класса модели данных, используя класс FXCollections.
Далее мы создаем столбцы таблицы.
Столбцы таблицы TableView представляет класс TableColumn, экземпляр которого создается с помощью конструктора, в котором можно указать заголовок столбца.
С помощью свойства cellValueFactory класса TableColumn, ячейки столбца таблицы заполняются данными.
То есть свойство cellValueFactory связывает конкретный столбец TableColumn с конкретным полем класса модели данных.
Такое связывание выполняется методом setCellValueFactory с помощью экземпляра класса PropertyValueFactory, в конструкторе которого указывается класс модели данных и тип данных ячейки столбца, а также указывается имя поля класса модели данных, с которым нужно связать столбец.
Под капотом, это работает как определение метода call интерфейса Callback, в котором возвращается соответствующее поле класса модели данных.
Метод setCellValueFactory возвращает JavaFX свойство, значением которого заполняется ячейка таблицы.
Кроме того, к этому значению автоматически добавится наблюдатель, так что любые изменения, которые будут произведены, будут наблюдаться таблицей TableView, в результате чего ячейка таблицы будет немедленно обновляться.
После создания столбцов, создается таблица TableView с помощью конструктора, в котором можно сразу указать список ObservableList данных для строк таблицы.
Или же его можно установить позже методом setItems.
Столбцы добавляются в таблицу методом getColumns.addAll.
Если уже после создания таблицы к списку ObservableList данных для строк таблицы добавить новый элемент, таблица TableView автоматически обновится и отобразит новую строку.
Свойство tableMenuButtonVisible обеспечивает опцию контекстного меню, позволяющего регулировать отображение столбцов таблицы.
Это свойство определяется методом setTableMenuButtonVisible (true).
В этом случае появляется кнопка, открывающая меню, в котором можно выбрать столбцы для их отображения.
С помощью CSS свойства -fx-font можно установить шрифт для таблицы.
Размеры таблицы устанавливаются методом setPrefSize.
Если ширина и высота таблицы недостаточны, чтобы вместить содержимое таблицы, для таблицы появляются полосы прокрутки.
Если ширина и высота таблицы избыточны, в таблице отображаются пустые строки и столбцы.
Методом setCursor можно установить курсор для таблицы, а методом setTooltip можно установить всплывающую подсказку для таблицы.
Столбец TableColumn может содержать набор ObservableList вложенных столбцов, заполнить который можно с помощью метода getColumns.addAll класса TableColumn.
Свойство placeholder дает возможность установить узел Node, отображаемый в случае отсутствия данных таблицы.
Для этого используется метод setPlaceholder таблицы.
Свойство selectionModel дает возможность определить выделенные элементы таблицы и установить множественность выбора.
Возможность выбора нескольких строк устанавливается методом setSelectionMode с константой MULTIPLE для модели выбора SelectionModel.
Также для свойств selectedIndexProperty и selectedItemProperty модели выбора можно установить слушателя, который будет обрабатывать выбор строк таблицы пользователем.
По умолчанию, данные в столбцах можно сортировать.
Пользователь может изменять порядок данных, щелкая мышью заголовки столбцов.
Первый щелчок сортирует данные столбца по возрастанию, второй щелчок сортирует данные столбца по убыванию, а третий клик отключает сортировку.
Пользователь может сортировать несколько столбцов в таблице и определять приоритет каждого столбца в операции сортировки.
Чтобы отсортировать несколько столбцов, пользователь нажимает клавишу Shift, щелкая по заголовку каждого столбца для сортировки.
Программным способ отсортировать столбцы таблицы можно, установив список sortOrder, который определяет порядок сортировки столбцов.
При этом можно установить порядок сортировки для каждого столбца списка.
Чтобы запретить сортировку данных, нужно вызвать метод setSortable (false) для столбца.
Свойство editable классов TableColumn и TableView определяет редактируемость столбца и таблицы.
По умолчанию это свойство имеет значение false.
Свойство cellFactory класса TableColumn дает возможность наполнить столбец пользовательскими компонентами, представленными классом TableCell, с помощью метода setCellFactory.
У класса TableCell есть стандартные реализации CheckBoxTableCell, ChoiceBoxTableCell, ComboBoxTableCell, ProgressBarTableCell, TextFieldTableCell.
В этом примере мы передаем в метод setCellFactory ячейку с текстовым полем TextFieldTableCell.
Свойства onEditCancel, onEditCommit и onEditStart обеспечат обработку событий редактирования.
Здесь мы используем метод setOnEditCommit, который устанавливает обработчик события завершения редактирования, когда пользователь нажимает клавишу Enter.
Для создания столбца со своими, пользовательскими редактируемыми элементами, необходимо создать класс, расширяющий класс TableCell, в котором переопределяются методы startEdit, cancelEdit, commitEdit и updateItem с использованием редактируемых текстовых полей, и наполнить его экземплярами столбец с помощью свойства cellFactory.
Дерево TreeView
Компонент TreeView представляет прокручивающееся отображение дерева элементов.
Дерево TreeView создается на основе корневого узла, который определяется свойством root и представлен классом TreeItem.
То есть сначала мы создаем корневой узел дерева TreeItem, добавляем в него дочерние узлы.
А затем создаем дерево TreeView с помощью конструктора, в котором можем сразу указать корневой узел, или установить корневой узел для дерева с помощью метода setRoot.
Узлы TreeItem создаются с помощью конструктора, в котором можно указать строковое отображение узла дерева и значок узла дерева.
Метод getChildren.addAll класса TreeItem позволяет добавить в узел TreeItem набор дочерних узлов.
Если узел не содержит дочерних элементов, он называется листом.
Метод setExpanded (true) узла программным способом раскрывает данный узел, отображая его дочерние

